﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml.Serialization;

namespace Interface
{

    //this is the wrapper class named goimerir
    [XmlInclude(typeof(VersionRetrieverWrapper))]
    [XmlInclude(typeof(VersionPostUsers))]
    [XmlInclude(typeof(VersionCreateBoard))]
    [XmlInclude(typeof(VersionCreateInvite))]
    [XmlInclude(typeof(VersionBoardRequest))]
    [XmlInclude(typeof(VersionMove))]
    [XmlInclude(typeof(VersionUrl))]
    [XmlInclude(typeof(VersionUsers))]
    [XmlInclude(typeof(VersionBoards))]
    [XmlInclude(typeof(VersionGetMoves))]
    [XmlInclude(typeof(VersionGetBoard))]
    
    
    public class goimerir
    {
        [XmlAttribute("version")]
        public String version="1.0";
    }



    
    public partial class InheritedRequestA : BaseRequest
    {
    }
    public partial class InheritedResponseA : BaseRequest
    {
    }
    public partial class BaseRequest
    {
        //members here 
        public string Member;
    }
   

    
    public class VersionRetrieverWrapper : goimerir
    {
        public InheritedRequestA Request { get; set; }
        public InheritedResponseA Response { get; set; }
        //public 
    }

    public class VersionPostUsers : goimerir
    {
        public User_Create user_create { get; set; }
        //public 
    }

    public class VersionCreateBoard : goimerir
    {
        public Create_Board create_board { get; set; }
        //public 
    }

    public class VersionCreateInvite: goimerir
    {
        public Create_Invite create_invite { get; set; }
        //public 
    }

    public class VersionBoardRequest : goimerir
    {
        public Create_Board_Request create_board_request { get; set; }
        //public 
    }

    public class VersionMove : goimerir
    {
        public Create_Move create_move { get; set; }
        //public 
    }





    //received serialized objects

    public class VersionUrl : goimerir
    {
        public Urls urls { get; set; }
        //public 
    }

    public class VersionUsers : goimerir
    {
        
        //public Users users { get; set; }
        public List<user> users;
        public VersionUsers() { users = new List<user>(); }


    }

    public class VersionBoards : goimerir
    {

        
        public List<board> boards;
        public VersionBoards() { boards = new List<board>(); }


    }

    public class VersionGetMoves : goimerir
    {


        public moves moves;
        public VersionGetMoves() { moves = new moves(); }


    }

    public class VersionGetBoard : goimerir
    {

        [XmlElement("board")]
        public BoardToPlay Board;
        public VersionGetBoard() { Board = new BoardToPlay(); }


    }


   

   

}
